package com.guo.myhandlerinterceptor;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class MyHandlerInterceptor implements HandlerInterceptor {

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		// 请求到达 控制器之前执行 在过滤器之后执行
//		●Instant——它代表的是时间戳
//		●LocalDate——不包含具体时间的日期，比如2014-01-14。它可以用来存储生日，周年纪念日，入职日期等。
//		●LocalTime——它代表的是不含日期的时间
//		●LocalDateTime——它包含了日期及时间，不过还是没有偏移信息或者说时区。
//		●ZonedDateTime——这是一个包含时区的完整的日期时间，偏移量是以UTC/格林威治时间为基准的。
		System.out.println("请求开始时间" + LocalDateTime.now());
		return true;
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		// 请求到达 控制器后，控制器执行完成后执行 在过滤器之后执行
		// 如果 控制器 Controller 返回了视图 ModelAndView对象 可以在这里进行操作
		System.out.println("请求完成时间" + LocalDateTime.now());
	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		// 所有请求处理完成后执行，
		System.out.println("所有请求完成时间" + LocalDateTime.now());
	}

}
